Conversation
Update workspace package version from 0.1.300 to 0.1.333 and align package versions in Cargo.lock. Remove RELEASES.md and apply minor whitespace/newline adjustments in Cargo.toml and crates/rustapi-core/Cargo.toml to prepare for the 0.1.333 release.
There was a problem hiding this comment.
Pull request overview
This PR upgrades and hardens several core capabilities across RustAPI: dual-stack HTTP/1.1 + HTTP/3 runtime support, more complete OpenAPI 3.1 spec integrity validation, and RFC-aligned WebSocket permessage-deflate negotiation, alongside related documentation and version bumps.
Changes:
- Implement dual-stack server runtime by sharing router/layers/interceptors via
Arcand running HTTP/1.1 + HTTP/3 concurrently. - Add
$refintegrity validation coverage for more OpenAPI component/member types, and update OpenAPI docs to 3.1. - Replace simplistic WS compression negotiation with parameter parsing + negotiation logic and add targeted tests.
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/cookbook/src/architecture/system_overview.md | Updates architecture diagrams/text to reflect OpenAPI 3.1 + v2 validation positioning |
| docs/ARCHITECTURE.md | Updates architecture doc bullets for OpenAPI 3.1 and validation extractors/features |
| crates/rustapi-ws/src/upgrade.rs | Adds permessage-deflate offer parsing/negotiation + tests; wires negotiation into upgrade response |
| crates/rustapi-ws/src/compression.rs | Updates test offer string to include explicit server window bits parameter |
| crates/rustapi-openapi/src/tests.rs | Adds tests ensuring integrity traversal covers additional ref-bearing component members |
| crates/rustapi-openapi/README.md | Updates docs to OpenAPI 3.1 + integrity checks |
| crates/rustapi-core/src/server.rs | Adds Server::from_shared constructor for shared state server instances |
| crates/rustapi-core/src/app.rs | Implements true run_dual_stack (HTTP/1.1 + HTTP/3) using shared state and try_join! |
| crates/rustapi-core/Cargo.toml | Formatting-only change (blank line) |
| RELEASES.md | Removes detailed release history file |
| Cargo.toml | Workspace version bump to 0.1.333 (+ formatting-only blank line) |
| Cargo.lock | Updates crate versions to 0.1.333 across workspace packages |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| fn parse_window_bits(value: &str) -> Option<u8> { | ||
| let parsed = value.parse::<u8>().ok()?; | ||
| if (9..=15).contains(&parsed) { | ||
| Some(parsed) | ||
| } else { | ||
| None | ||
| } |
There was a problem hiding this comment.
parse_window_bits only accepts values in 9..=15, but RFC 7692 allows permessage-deflate window bits in the range 8..=15. With the new strict parsing this can cause the server to incorrectly treat valid client offers (e.g. client_max_window_bits=8) as invalid and skip negotiating compression. Consider accepting 8..=15 here (and aligning WsCompressionConfig clamping/docs accordingly) so negotiation remains compatible with compliant clients.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…api/ws feat(core/openapi/ws): dual-stack (H1+H3) runtime, async validation context, OpenAPI ref integrity, WS permessage-deflate negotiation, aligned docs f3bae58
This pull request introduces several improvements and fixes across the RustAPI codebase, focusing on enhanced HTTP/3 support, more robust OpenAPI schema validation, and standards-compliant WebSocket permessage-deflate negotiation. It also updates documentation and versioning to reflect these changes.
HTTP/3 and Dual-Stack Server Improvements
RustApi::run_dual_stack, allowing simultaneous HTTP/1.1 (TCP) and HTTP/3 (QUIC/UDP) servers on the same endpoint. Shared state is now handled usingArc, and a newServer::from_sharedconstructor was introduced to facilitate this. [1] [2]WebSocket Compression Negotiation
OpenAPI Schema Validation Enhancements
$refschema references. New tests ensure all reference-bearing members are validated, catching missing schema definitions in responses, headers, request bodies, and callbacks. [1] [2]Documentation and Versioning
RELEASES.mdchangelog in favor of streamlined release tracking.Cargo.tomlto0.1.333.Other minor changes:
Cargo.tomlfiles for formatting consistency. [1] [2]These changes collectively improve standards compliance, feature completeness, and maintainability of the RustAPI project.